package com.sxzt.core.result;

import com.sxzt.core.data.BaseResponse;
import com.sxzt.core.enum_status.BaseOut;

public interface GlobalResponseBuilder<T> {


    BaseOut getBaseOut();

    BaseResponse<T> getResponse();

    /**
     * 构建code
     * @return 顶级构造
     */
    default GlobalResponseBuilder<T> buildCode() {
        getResponse().setCode(getBaseOut().getCode());
        return this;
    }

    /**
     * 构建信息
     * @return 顶级构造
     */
    default GlobalResponseBuilder<T> buildMes() {
        getResponse().setMsg(getBaseOut().getMes());
        return this;
    }

    /**
     * 构建数据
     * @return 顶级构造
     */
    default GlobalResponseBuilder<T> buildData(T data) {
        getResponse().setData(data);
        return this;
    }

    /**
     * 子类自定义实现
     * @return 顶级构造
     */
    default GlobalResponseBuilder<T> buildOther() {
        //自定义实现逻辑
        return this;
    }

    /**
     * 最终构建
     * @return 统一返回
     */
    default BaseResponse<T> build() {
        return getResponse();
    }
}
